package agg

import (
    "fmt"
    "strings"
)

/*
	卸载入口
*/
func Uninstall() {
	if p, _ := PathExists("Volumes"); p {
		if mstr, err := Getshell("ls", "Volumes"); err  {
			return
		}else{
			var j 	int
			vol 	:= []string{}
			arrstr  := strings.Split(mstr, "\n")          // 以换行符为切割
			for _, value := range arrstr {
				if value != "" {
					fmt.Printf("%d, %s\n", j, value)
					vol   = append(vol, value)
					j++
				}
			}
			if j == 0 {
				fmt.Println("还没有挂载任何盘!")
			}else{
				var str string
				fmt.Printf("输入要卸载的盘(数字):")
				fmt.Scanf("%s", &str)
				judge := &Judge{ I: j, Str: str}
		        if p := judge.Run(); p {
		            uninstall_run("Volumes/" + vol[judge.I])
		        }else{
		            fmt.Println(judge.Str)
		        }
			}
		}
	}else{
		fmt.Println("还没有挂载任何盘!")
	}
}


func uninstall_run(v string) {
	var str string
	if mount, err := Getshell("mount"); err==false && strings.Contains(mount, v) {
		for {
			if _, err := Getshell("sudo", "umount", v); err {
				fmt.Println("先关掉正在占用 " + v + " 的程序，然后按 Return 键卸载")
				fmt.Printf("若需要退出卸载, 请输入命令(n):")
				fmt.Scanf("%s", &str)
				if str == "n" { break }
			}else{
				Getshell("sudo", "rm", "-r", v)
				fmt.Println("卸载成功:", v)
				break
			}
		}
	}
}